#include "../include/head.h"
// 显示主菜单
void dispmenue()
{//定义一个字符指针数组
    char *menu[4] = {"1、商品管理", "2、库存管理", "3、用户管理", "4、退出"};
    printf("-------------------------------商品管理系统---------------------------\n");
    for (int i = 0; i < 4; i++)
    {
        printf("%s\n", menu[i]);
    }
    printf("------------------------------------------------------------------\n");
}

// 显示商品管理子菜单
void dispmenue1()
{
    char *menu[3] = {"1、商品入库", "2、库存出库", "3、退出"};
    printf("-------------------------------商品管理---------------------------\n");
    for (int i = 0; i < 3; i++)
    {
        printf("%s\n", menu[i]);
    }
    printf("------------------------------------------------------------------\n");
}

// 商品管理子菜单操作
void dispmenu1_1(Pnode_list H)
{
    while (1)
    {   
        system("clear");
        dispmenue1(); // 显示子菜单
        printf("当前商品数量: %d\n", count_data(H));
        printf("请选择操作: ");
        int choice;
        scanf("%d", &choice);
        getchar(); // 清除输入缓冲区
        system("clear");
        switch (choice)
        {
        case 1: // 商品入库
            inputdata(H);
            break;
        case 2: // 商品出库
            outputdata(H);
            printf("请输入要删除的商品编号或名称: ");
            char input[20];
            scanf("%19s", input);
            getchar();
            if(del_list(H, input)!=0){
                printf("删除失败\n");
                printf("按回车键继续\n");
                scanf("%*c");
            }
            break;
        case 3: // 退出
            return;
        default:
            printf("无效选择\n");
        }
    }
}

// 库存管理子菜单操作
void dispmenu2(Pnode_list H, int user_type)
{
    while (1)
    {
        system("clear");

        printf("-------------------------------库存管理---------------------------\n");
        printf("1、库存查询\n");
        if (user_type == USER_TYPE_ADMIN)
        {
            printf("2、库存调整\n");
        }
        printf("3、退出\n");
        printf("-----------------------------------------------------------------------\n");

        printf("当前商品数量: %d\n", count_data(H));
        printf("请选择操作: ");
        int choice;
        scanf("%d", &choice);
        getchar();
        system("clear");
        switch (choice)
        {
        case 1: // 库存查询

            printf("请输入要查询的商品编号或名称: ");
            char data[20];
            scanf("%19s", data);
            getchar();
            find_list(H, data);
            break;
        case 2: // 库存调整
            if (user_type == USER_TYPE_ADMIN)
            {   
                outputdata(H);
                printf("请输入要调整的商品编号或名称: ");
                scanf("%19s", data);
                getchar();
                printf("\n输入要进行的操作（1、增加库存 2、减少库存）");
                int num;
                scanf("%d", &num);
                getchar();
                printf("\n输入要增加或减少的库存数：");
                int number;
                scanf("%d", &number);
                getchar();
                modify_stock(H, data, num, number);
            }
            else
            {
                printf("您没有权限进行此操作\n");
            }
            break;
        case 3: // 退出
            return;
        default:
            printf("无效选择\n");
        }
    }
}

/* 用户管理菜单 */
void dispmenue3(PUserNode currentUser, PUserNode userList)
{
    while (1)
    {   
        system("clear");
        printf("-------------------------------用户管理---------------------------\n");
        printf("1. 查看当前账户信息\n");
        printf("2. 修改用户名\n");
        printf("3. 修改用户密码\n");
        printf("4. 退出\n");
        printf("请选择: ");

        int choice;
        scanf("%d", &choice);
        getchar();
        system("clear");
        switch (choice)
        {
        case 1:
            output_user_info(currentUser);
            break;
        case 2:
        {
            modify_username(currentUser, userList);
            break;
        }
        case 3:
        {
            modify_user_password(currentUser, userList);
            break;
        }
        case 4:
            return;
        default:
            printf("无效选择\n");
        }
    }
}
